[アップデート] Amazon RDS に「EC2 データベースからデータを移行」機能が追加されました
いわさです。
アップデートバナーが出ているので「なんでこれは?」とお気づきの方もいると思うのですが、少し前のアップデートで Amazon RDS のメニューに「EC2 データベースからデータを移行」というものが追加されています。
こちらは次のアナウンスのアップデートで、EC2 上で実行しているデータベースサーバーから RDS に移行させることができる機能です。
「それはなかなかすごいのでは。どういう仕組み?」という感じですが、実体は裏で DMS リソースが色々と自動で作成されマイグレーションタスクが実行される感じになっています。
DMS の設定が面倒な場合にワンクリックで移行タスク作成したいみたいな時に使えそうなのですが、移行タスクの細かいカスタマイズが出来ないので使う場面は結構選びそうです。使い勝手は EC2 + RDS のワンクリック接続機能に似ている感じですね。
どういう挙動をするのか気になり、MySQL で試してみましたのでその様子を紹介します。
やってみた
上記メニューを実行すると、次のようにソースデータベースを選択する形になります。
ソース EC2 とターゲット RDS は同じ VPC に存在している必要があり、さらに本日時点では MySQL、MariaDB、PostgreSQL のみがサポートされています。
今回は RDS for MySQL と MySQL on Amazon Linux 2023 の間でデータ移行を試してみます。
事前に EC2 上では MySQL をインストールして適当なデータベース、テーブル、レコードなどを作成しているのですが、セットアップにあたって次の記事が大変参考になりました。最高でした。
% mysql -h 203.0.113.1 -u admin -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.4.3 MySQL Community Server - GPL
Copyright (c) 2000, 2024, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database hogedb;
Query OK, 1 row affected (0.04 sec)
mysql> use hogedb;
Database changed
mysql> create table fuga (id int, name varchar(10));
Query OK, 0 rows affected (0.05 sec)
mysql> insert into fuga values (1, 'aaa'), (2, 'bbb'), (3, 'ccc');
Query OK, 3 rows affected (0.04 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> select * from fuga;
+------+------+
| id | name |
+------+------+
| 1 | aaa |
| 2 | bbb |
| 3 | ccc |
+------+------+
3 rows in set (0.03 sec)
ソースデータベースを指定したので続いてターゲットデータベースを指定します。
こちらは認証情報などを指定するだけです。
あとはデータ移行の設定を行うのですが、独自で DMS タスクを設定するよりはカスタマイズできる項目が少ないです。
フルロードか CDC か、みたいな選択はできるのですが、変換ルールなどの設定は出来ないです。
純粋な同種移行でのみ採用出来る感じになると思います。
あとは「移行」ボタンを押すとすぐに移行が開始されます。が、私は初回ここで失敗しました。
IAM ロール周りがちょっと厄介で、既存ロールを使う場合は次の公式ドキュメントを確認して適切な設定が必要です。
新しい IAM ロールを作成するオプションを使うとこのあたりの面倒な部分自動でやってくれるので、新規 IAM ロールを増やすことに抵抗がなければそちらを選んだほうがトラブらないと思います。
IAM ロールを新規作成にした場合でも失敗する場合は DMS 側のリソース一式を一度きれいにしてみてください。失敗した設定が残っているとうまくいかない場合があります。私はリソースの重複があって VPC ID の設定が出来ない問題が発生しました。
以下までいけば成功です。あとはデータベースの構成によって移行タスク実行の過程で失敗する場合はぜんぜんあるのですが、まぁそこから先は DMS のトラブルシューティングなのでこの記事では取り扱いません。
移行プロジェクトのデータ移行が開始されていると思いますので、後はこちらのステータスやログを確認して移行を見守ってみてください。
ちなみに DMS 側では、移行プロジェクト、インスタンスプロファイル、データプロバイダー(EC2 のと、RDS の)が自動作成されています。
さいごに
本日は Amazon RDS に「EC2 データベースからデータを移行」機能が追加されたので試してみました。
直近以下の記事で DMS を使ったこともあり、手軽に DMS の設定が出来るという点では確かに良いと思いました。
ただ、ある程度デフォルト設定で様々な DMS リソースが設定されるようなので、かなり使い所は選ぶと思います。
計画的な移行で積極的に採用するには色々と内部仕様を把握しておかないとトラブルが起きそうなので、検証環境でちょっと RDS 化したい、みたいな時に採用する感じなのかなと思いました。